Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

344
Visualizações
Kotlin Global Variable Showing As Zero "0"

I am a complete beginner and have started to learn Kotlin via YouTube tutorials and Google searching for specifics. When I was following a tutorial, he created three variables inside the MainActivity class as the following

class MainActivity : AppCompatActivity() {

var firstName= "David"
var secondName= "Tal"
var age = 20

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
}

Next, he uses the created variables in a private function like this:

private fun nameRating(){
   if(firstName == secondName){
      Toast.makeText(applicationContext,"10/10", Toast.LENGTH_LONG).show()
   }else{
      Toast.makeText(applicationContext,"5/10", Toast.LENGTH_LONG).show()
   }}

I followed the example and recreated it in Android Studio, but the if condition triggered, and I thought it was weird. After debugging it turned out that both firstName and secondName are "0". I thought the variables were supposed to be global, and it is confusing why it is not working because the age variable is correct.

If I am completely wrong on how this should work, any explanation/clarification on the matter would be appreciated.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Don't worry, Kotlin is not doing anything weird or magical behind your back in this case.

The var keyword in Kotlin means that you are declaring a variable, but the scope of that variable is not "global". The scope is the code block in which the variable is declared. In your case, you declared 3 variables in a class scope, so these are class variables and they can be accessed from anywhere inside the class MainActivity. Since they are also public (by default in Kotlin declarations are public, unless you specify a different access modifier, such as private, protected etc.), these 3 variables can also be accessed from outside the class (or from a subclass), as long as the calling code has a reference to an instance of this class. This works the same in Java, if something is public same access rules apply.

Since these are variables (their value can change) it also means that any code that has access to them, can also change their values. So the "weird" behavior that you are experiencing is likely due to some other part of code setting firstName and secondName to "0" before your nameRating() function is called, and that is why firstName and secondName are equal and the if condition evaluates to true.

In Android Studio, you can right-click on one of your variables and select "Find Usages". Search results will show up, and there you will see parts in code where other code might be changing the values of your variables. Hopefully that will shed some light on this behavior that you are seeing.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda